package br.edu.ifrn.sgp.resources;

import java.util.ArrayList;
import java.util.Collection;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

import br.edu.ifrn.sgp.admin.dao.NoticiaDAO;
import br.edu.ifrn.sgp.admin.dominio.Noticia;
import br.edu.ifrn.sgp.arq.dominio.Parametros;
import br.edu.ifrn.sgp.arq.helper.ParametrosHelper;
import br.edu.ifrn.sgp.arq.util.ValidatorUtil;
import br.edu.ifrn.sgp.dtos.NoticiaDTO;
import br.edu.ifrn.sgp.dtos.PessoaDTO;
import br.edu.ifrn.sgp.dtos.UsuarioDTO;

@Path("/noticia")
public class NoticiaResource {
	
	@GET
	@Produces("application/json")
	@Path("/ultimas")
	public Response getUltimasNoticias(){
		NoticiaDAO dao = new NoticiaDAO();
		Response response;
		
		Collection<Noticia> noticias = dao.findUltimasNoticias(ParametrosHelper.getValorIntParametro(Parametros.QUANTIDADE_NOTICIAS_PAGINA_INICIAL), false);
		
		if(ValidatorUtil.isNotEmpty(noticias)){
			Collection<NoticiaDTO> noticiasDTO = new ArrayList<NoticiaDTO>();
			
			for (Noticia noticia : noticias){
				NoticiaDTO dto = new NoticiaDTO();
				dto.setAtualizadoEm(noticia.getAtualizadoEm());
				dto.setCriadoEm(noticia.getCriadoEm());
				dto.setId(noticia.getId());
				dto.setPublica(noticia.getPublica());
				dto.setTexto(noticia.getTexto());
				dto.setTitulo(noticia.getTitulo());
				
				if (ValidatorUtil.isNotEmpty(noticia.getAtualizadoPor())){
					dto.setAtualizadoPor(new UsuarioDTO());
					dto.getAtualizadoPor().setPessoa(new PessoaDTO());
					dto.getAtualizadoPor().getPessoa().setNome(noticia.getAtualizadoPor().getPessoa().getNome());
				}
				
				if (ValidatorUtil.isNotEmpty(noticia.getCriadoPor())){
					dto.setCriadoPor(new UsuarioDTO());
					dto.getCriadoPor().setPessoa(new PessoaDTO());
					dto.getCriadoPor().getPessoa().setNome(noticia.getCriadoPor().getPessoa().getNome());
				}
				
				noticiasDTO.add(dto);
			}
			
			response = Response.status(Response.Status.OK).entity(noticiasDTO.toArray()).build();
		} else {
			response = Response.status(Response.Status.OK).entity(null).build();
		}
			
		return response;
	}
	
}
